This invention generally relates to video communications, and more particularly, to compression and decompression of video images.
Video phones and video conferencing equipment used by most businesses and households require very high compression ratio due to the bandwidth limitations inherent in today""s telephone networks. In response to this requirement, the H.263 International Standard for Low Bit Rate Video Communications was developed. The standard was immediately adopted by the video industry. Advantages of the H.263 International Standard include the implementation of an optional technique called Advanced Prediction Mode (APM). APM significantly improves the video image by removing artifacts introduced during motion estimation. A drawback to APM is that it is very difficult and inefficient to implement in hardware. As a result, the first implementations of advance prediction mode were in software only.
One of the H.263 techniques for compressing video is to use motion estimation. Motion estimation processes video by sending motion vectors to the decoder instead of actual pixels. The decoder takes the motion vectors and uses them to recreate a current frame by accessing blocks of data, pointed by the motion vectors, from the previously decoded frame. In H.263 APM mode, a single motion vector can be sent in place of each of 8xc3x978 block of pixels. The APM option requires the motion vectors representing each 8xc3x978 block to be averaged with those of surrounding blocks. This reduces the blocking artifacts introduced in the motion estimation process. Unfortunately, averaging the motion vectors from surrounding macroblocks turns out to be both memory and hardware intensive for several reasons. Firstly, retrieving motion vectors from surrounding blocks means having to store a large number of motion vectors in RAM. A requirement to retrieve the motion vectors above the current block requires storing an entire row of motion vectors which is very memory intensive. Secondly, the H.263 standard defines the APM mode to require storing and retrieving motion vectors for two separate functions: Overlapped Block Motion Compensation (OBMC) and predictor calculations. These functions are not easily combined because the OBMC function lags behind the predictor function by one macroblock of decoding time, which forces the functions to operate in different time frames. Thirdly, both the OBMC and predictor calculations require four separate address patterns each. Therefore, there are eight separate addressing schemes which are required. However, none of the addressing schemes are in a linear order, or any other pattern which is easily addressable.
Due to the problems mentioned above, it is very difficult to design a hardware efficient implementation of the APM mode defined by the H.263 standard. Software implementations of the APM mode are advantageous due to the availability of a very large amount of memory and system resources which are required to implement this function. However, software implementations suffer from the disadvantage of running much slower, sacrificing frame rate and image quality obtainable by hardware implementations.